#include "lvgl/lvgl.h"

/**
 * 获取组件对象宽度
 * @param obj 组件对象
 * @return lv_coord_t 组件对象宽度
 */
lv_coord_t get_obj_width(lv_obj_t *obj) {
    //如果对象刚创建完时位置还未计算，此时调用lv_obj_get_width取得的宽度为0，需要调用lv_obj_update_layout强制重新计算坐标才行
    lv_obj_update_layout(obj);
    lv_coord_t obj_w = lv_obj_get_width(obj);
    return obj_w;
}

/**
 * 获取组件对象高度
 * @param obj 组件对象
 * @return lv_coord_t 组件对象高度
 */
lv_coord_t get_obj_height(lv_obj_t *obj) {
    //如果对象刚创建完时位置还未计算，此时调用lv_obj_get_width取得的宽度为0，需要调用lv_obj_update_layout强制重新计算坐标才行
    lv_obj_update_layout(obj);
    lv_coord_t obj_h = lv_obj_get_height(obj);
    return obj_h;
}

/**
 * 组件从父视图移除
 * @param obj 组件对象
 * @return void
 */
void remove_from_surperview(lv_obj_t *obj) {
    lv_obj_delete(obj);// 从父对象中移除；释放它自身和子对象占用的内存；让该对象从 LVGL 层级树中消失；
    obj = NULL;// 防止野指针
}


/**
 * 组件设置是否隐藏flag
 * @param obj 组件对象
 * @param is_hidden 是否隐藏
 * @return void
 */
void hidden_obj(lv_obj_t *obj, _Bool is_hidden) {
    if (is_hidden)
    {
        lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN);
    } else {
        lv_obj_clear_flag(obj, LV_OBJ_FLAG_HIDDEN);
    }
}
